package com.jiaying.sync.config;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * SQL Server配置管理类
 */
public class SqlServerConfig {
    private static final String CONFIG_FILE = "application.properties";
    private Properties properties;
    
    public SqlServerConfig() {
        loadProperties();
    }
    
    /**
     * 加载配置文件
     */
    private void loadProperties() {
        properties = new Properties();
        try (InputStream input = getClass().getClassLoader().getResourceAsStream(CONFIG_FILE)) {
            if (input == null) {
                System.err.println("无法找到配置文件: " + CONFIG_FILE);
                return;
            }
            properties.load(input);
            System.out.println("成功加载SQL Server配置文件: " + CONFIG_FILE);
        } catch (IOException ex) {
            System.err.println("加载SQL Server配置文件失败: " + ex.getMessage());
        }
    }
    
    /**
     * 获取SQL Server主机地址
     */
    public String getHost() {
        return properties.getProperty("sqlserver.host", "localhost");
    }
    
    /**
     * 获取SQL Server端口号
     */
    public int getPort() {
        return Integer.parseInt(properties.getProperty("sqlserver.port", "1433"));
    }
    
    /**
     * 获取数据库名称
     */
    public String getDatabaseName() {
        return properties.getProperty("sqlserver.database.name", "master");
    }
    
    /**
     * 获取用户名
     */
    public String getUsername() {
        return properties.getProperty("sqlserver.username", "sa");
    }
    
    /**
     * 获取密码
     */
    public String getPassword() {
        return properties.getProperty("sqlserver.password", "");
    }
    
    /**
     * 获取最大连接数
     */
    public int getMaxPoolSize() {
        return Integer.parseInt(properties.getProperty("sqlserver.connection.pool.max.size", "20"));
    }
    
    /**
     * 获取最小空闲连接数
     */
    public int getMinIdle() {
        return Integer.parseInt(properties.getProperty("sqlserver.connection.pool.min.idle", "5"));
    }
    
    /**
     * 获取连接超时时间（毫秒）
     */
    public long getConnectionTimeoutMs() {
        return Long.parseLong(properties.getProperty("sqlserver.connection.timeout.ms", "30000"));
    }
    
    /**
     * 获取空闲连接超时时间（毫秒）
     */
    public long getIdleTimeoutMs() {
        return Long.parseLong(properties.getProperty("sqlserver.idle.timeout.ms", "600000"));
    }
    
    /**
     * 获取连接最大生存时间（毫秒）
     */
    public long getMaxLifetimeMs() {
        return Long.parseLong(properties.getProperty("sqlserver.max.lifetime.ms", "1800000"));
    }
    
    /**
     * 获取连接泄漏检测阈值（毫秒）
     */
    public long getLeakDetectionThresholdMs() {
        return Long.parseLong(properties.getProperty("sqlserver.leak.detection.threshold.ms", "60000"));
    }
}